

//(1)n的k次方，递归调用
//int power(int n, int k)
//{
//	if (k == 0) {
//		return 1;
//	}
//	else if (k > 0) {
//		return n*power(n, k - 1);
//	}
//	else//指数为位负数的情况
//	{
//		return 1 / (n * power(n, k + 1));
//	}
//}




//(2)将一个非负整数的所有位上的数字进行相加
//int DigitSum(int n) {
//	if (n!=0) {
//		return n % 10+DigitSum(n / 10);
//	}
//	else {
//		return 0;
//	}
//}




//（3）统计字符串中的个数
//普通版本
//int strlen_common(char* str) {
//	int count = 0;
//	while (*str) {
//		count++;
//		str++;
//	}
//	return count;
//}
//
////递归版本
//int strlen_recursion(char* str) {
//	if (*str) {
//		return 1+strlen_recursion(++str);
//	}
//	else {
//		return 0;
//	}
//}




//(4)递归的方式打印出数字的每一位，整数，但是不要求正负数
//void single(int n) {
//	printf("%d  ",n%10);
//	if (n / 10 != 0) {
//		single(n / 10);
//	}
//}




//(5)递归的方式输出第n个斐波那契数
//补充一下，斐波那契数就是前两项之后相加等于第三项，从第三位开始是这样的规律，斐波那契数前两项的数都是1
//int fibonacci(int n) {
//	if (n <= 2) {//所有的起源都来自于两个1
//		return 1;
//	}
//	return fibonacci(n - 1) + fibonacci(n - 2);
//}





//(6)递归实现字符串反转
//void  reverse_string(char* string) {
//	static int COUNT = 1;//这个就是交换的第一个倒数第一个......
//	int count = 0;
//	while (*(string + count)) {//count个字符
//		count++;
//	}
//	char ch1 = 0;
//	if (COUNT <=count/2) {
//		ch1 =  string[COUNT - 1];
//		string[COUNT - 1] = string[count-COUNT];
//		string[count - COUNT] = ch1;
//		COUNT++;
//		reverse_string(string);
//	}
//	
//
//
//
//}






//(7)递归和普通实现n的阶乘
//普通方式
//int factorial(int n) {
//	int mul_num = 1;
//	while (n > 0) {
//		mul_num *= n;
//		n--;
//	}
//	return mul_num;
//}



//递归方式
//int rec_factorial(int n){
//	if (n <= 1) {
//		return 1;
//	}
//	else {
//		return n * rec_factorial(n - 1);
//	}
//}
